// alan-snippet/internal/dto/snippet_dto.go
package dto

type CreateSnippetRequestDTO struct {
	Title   string   `json:"title" binding:"required"`
	Content string   `json:"content" binding:"required"`
	Tags    []string `json:"tags"` // 注意：这里的 json tag 应该是 "tags"，不是 "tag"
}

type CreateSnippetResponseDTO struct {
	ID      uint   `json:"id"`
	Title   string `json:"title"`
	Content string `json:"content"`
	Tags    []struct {
		ID   uint   `json:"id"`
		Name string `json:"name"`
	} `json:"tags"`
}

type ListSnippetsRequestDTO struct {
	Tag  string `form:"tag"`
	Page int    `form:"page,default=1"`
	Size int    `form:"size,default=10"`
}

type SnippetResponseDTO struct {
	ID      uint             `json:"id"`
	Title   string           `json:"title"`
	Content string           `json:"content"` // 列表页可以考虑省略这个字段
	Tags    []TagResponseDTO `json:"tags"`
}

type ListSnippetsResponseDTO struct {
	Snippets []SnippetResponseDTO `json:"snippets"`
	Total    int64                `json:"total"`
}

type UpdateSnippetRequestDTO struct {
	Title   string   `json:"title" binding:"required"`
	Content string   `json:"content" binding:"required"`
	Tags    []string `json:"tags"`
}

type UpdateSnippetResponseDTO struct {
	ID      uint             `json:"id"`
	Title   string           `json:"title"`
	Content string           `json:"content"`
	Tags    []TagResponseDTO `json:"tags"`
}
